﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.UI.HtmlControls;

namespace Tp2
{
    public partial class CréationAccount : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
            {
                SqlConnection connexionBD;
                string cheminBD = Server.MapPath("App_Data/TP2.mdf");
                string chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";
                
                connexionBD = new SqlConnection(chaineConnexion);
                connexionBD.Open();

                Validate();

                if(Page.IsValid)
                {
                    string requeteSQLAjout = "INSERT INTO clients (nom, prenom, adresse, ville, province, codePostal, login, motPasse, email)" +
                                    " VALUES ('" + txtNom.Value + 
                                    "', '" + txtPrenom.Value +
                                    "', '" + txtadresse.Value +
                                    "', '" + txtVille.Value +
                                    "', '" + selectProvince.Value +
                                    "', '" + txtCode.Value +
                                    "', '" + txtlogin.Value +
                                    "', '" + txtMotDePasse.Value +
                                    "', '" + txtEmail.Value + "')";

                    SqlCommand commandeAjout = new SqlCommand(requeteSQLAjout, connexionBD);

                    commandeAjout.ExecuteNonQuery();
                    connexionBD.Close();
                    Response.Redirect("ok.aspx");
                }
            }
        }

        protected void ValidationProvince(object source, ServerValidateEventArgs args)
        {
            if (selectProvince.SelectedIndex == 0)
            {
                validationProvince.ErrorMessage = "Choix de province obligatoire";
                args.IsValid = false;
            }
        }

        protected void CustomValidatorMotDePasse_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (txtMotDePasse.Value.Length == 0)
            {
                CustomValidatorMotDePasse.ErrorMessage = "Mot de passe Obligatoire";
                args.IsValid = false;
            }
            else if (txtMotDePasse.Value != txtMotDePasseRepeat.Value)
            {
                CustomValidatorMotDePasse.ErrorMessage = "Mot de passe non identique";
                args.IsValid = false;
            }
            else if ((txtMotDePasse.Value.Length < 5) && (txtMotDePasse.Value.Length > 0))
            {
                CustomValidatorMotDePasse.ErrorMessage = "Mot de passe doit avoir 5 charactères ou plus";
                args.IsValid = false;
            }
        }

        protected void CustomValidatorNomUtil_ServerValidate(object source, ServerValidateEventArgs args)
        {
            SqlConnection connexionBD;
            SqlDataReader lecteurBDUtilisateur;
            string cheminBD = Server.MapPath("App_Data/TP2.mdf");
            string chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";

            connexionBD = new SqlConnection(chaineConnexion);
            connexionBD.Open();

            string requeteSQLUtilisateur;
            requeteSQLUtilisateur = "SELECT COUNT(*) AS nb FROM clients WHERE login='" + txtlogin.Value + "'";

            SqlCommand commandUtilisateur = new SqlCommand(requeteSQLUtilisateur, connexionBD);
            lecteurBDUtilisateur = commandUtilisateur.ExecuteReader();

            lecteurBDUtilisateur.Read();

            int nb = Convert.ToInt32(lecteurBDUtilisateur["nb"]);

            lecteurBDUtilisateur.Close();
            connexionBD.Close();

            if (txtNom.Value.Length == 0)
            {
                args.IsValid = false;
                CustomValidatorNomUtil.ErrorMessage = "Nom d'utilisateur obligatoire";
            }
            else if (nb > 0)
            {
                args.IsValid = false;
                CustomValidatorNomUtil.ErrorMessage = "Nom d'utilisateur déjà utilisé";
            }
            else
            {
                args.IsValid = true;
                CustomValidatorNomUtil.ErrorMessage = "";
            }
        }

        protected void CustomValidatorCourriel_ServerValidate(object source, ServerValidateEventArgs args)
        {
            SqlConnection connexionBD;
            string cheminBD = Server.MapPath("App_Data/TP2.mdf");
            string chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";

            connexionBD = new SqlConnection(chaineConnexion);
            connexionBD.Open();

            SqlDataReader lecteurBDEmail;
            string requeteSQLEmail = "SELECT COUNT(*) AS email FROM clients WHERE email='" + txtEmail.Value + "'";

            SqlCommand commandEmail = new SqlCommand(requeteSQLEmail, connexionBD);
            lecteurBDEmail = commandEmail.ExecuteReader();

            lecteurBDEmail.Read();

            int email = Convert.ToInt32(lecteurBDEmail["email"]);

            lecteurBDEmail.Close();
            connexionBD.Close();

            if (email < 0)
            {
                CustomValidatorCourriel.ErrorMessage = "Courriel déjà utilisé";
                args.IsValid = false;
            }
            else if (txtEmail.Value.Length == 0)
            {
                CustomValidatorCourriel.ErrorMessage = "Courriel obligatoire";
                args.IsValid = false;
            }
            else
            {
                args.IsValid = true;
                CustomValidatorCourriel.ErrorMessage = "";
            }
        }
    }
}